package com.ddch.liaomingtinkerhotfix.activity;

import android.content.Context;
import android.os.Environment;
import android.view.View;
import android.widget.Toast;

import com.ddch.liaomingtinkerhotfix.R;
import com.ddch.liaomingtinkerhotfix.base.BaseActivity;
import com.ddch.liaomingtinkerhotfix.utils.ParamsShot;
import com.ddch.tinkerlib.FixDexUtils;
import com.ddch.tinkerlib.utils.Constants;
import com.ddch.tinkerlib.utils.FileUtils;

import java.io.File;
import java.io.IOException;

/**
 * created by 韦敏敏
 * on 2019/12/9
 */
public class SecondActivity extends BaseActivity implements View.OnClickListener {
    @Override
    protected int getContentViewLayoutID() {
        return R.layout.layout_second;
    }

    @Override
    protected void initViewsAndEvnets() {
        internalFindViewById(R.id.btn_show).setOnClickListener(this);
        internalFindViewById(R.id.btn_fix).setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if(view.getId() == R.id.btn_show){
            ParamsShot paramsShot = new ParamsShot();
            paramsShot.math(this);
        } else if(R.id.btn_fix == view.getId()){
            fixBug();
        }
    }
        // classes2.dex ---> /storage/emulated/0/classes2.dex
    private void fixBug() {
        // 通过服务器接口下载dex文件，v1.3.3版本有一个热修复dex包
        File sourceFile = new File(Environment.getExternalStorageDirectory(), Constants.DEX_NAME);
        // 目标路径，私有目录里的临时文件夹odex
        File targetFile = new File(getDir(Constants.DEX_DIR, Context.MODE_PRIVATE).getAbsolutePath() + File.separator + Constants.DEX_NAME);
        // 如果已经存在dex修复包，则先进行清理
        if(targetFile.exists()){
            targetFile.delete();
            Toast.makeText(this, "删除已存在的dex文件", Toast.LENGTH_SHORT).show();
        }
        // 复制修复包dex文件到app私有目录
        try {
            FileUtils.copyFile(sourceFile, targetFile);
            Toast.makeText(this, "复制dex文件完成", Toast.LENGTH_SHORT).show();
            // 开始修复
            FixDexUtils.loadFixDex(this);
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}
